# 常用模块的使用，包括os, ping3, json

"""
下面几个常用模块为例，介绍模块导入的语法。os 模块是系统相关的模块，提供了查
询和修改目录结构、查询系统运行环境等系统相关操作的功能。
【示例 5.5.1.1】下面的代码导入了 os 模块，调用了 os 模块中的 getcwd() 函数获得
当前的工作路径，即程序文件的位置。
"""
# os模块为内置的模块，不用自己去实现
import os
print(f'当前代码文件在系统中的位置为：{os.getcwd()}')
print("*" * 100)

"""
【示例 5.5.1.2】下面的代码导入了 os 模块中的 getcwd()函数，调用了 getcwd()函数获
得当前的工作路径，即程序文件的位置。
"""
from os import getcwd
print(f'当前程序文件在系统中的位置为：{getcwd()}')
print("*" * 100)

"""
使用 from … import … as 的方式给导入的函数设置一个别名。
【示例 5.5.1.3】下面的代码导入了 os 模块中的 getcwd()函数，并设置了一个别名 pwd，
调用了 pwd()函数获得当前的工作路径，即程序文件的位置，然后自定义函数 getcwd()并调
用。
"""
# 这里将getcwd函数重名为pwd
from os import getcwd as pwd
def getcwd():
    return '自定义的函数 getcwd()！' 
print(f'当前程序文件在系统中的位置为：{pwd()}')
print(f'调用 getcwd(): {getcwd()}')
print("*" * 100)

"""
【示例 5.5.1.5】下面的代码导入了 random 模块、math 模块，并为该模块设置别名为 r、
m，然后使用 random 模块生成了一个随机数、使用 math 模块得到了 π 的近似值。
"""
#这里将random模块，引入后重命名为r
import random as r
# 这里将math模块，引入后重命名为m
import math as m
# r.randint是随机生成1-100的整型数字
print(f'生成一个 1-100 之间的随机数：{r.randint(1, 100)}')
# m.pi是生成pi的值
print(f'π 的近似值是：{m.pi}')
print("*" * 100)

"""
【示例 5.5.1.7】下面的代码使用 json 模块，实现了将字典转化为 JSON 字符串和将 JSON
字符串转换为字典的功能。
"""
import json
from entity import demo_dict
# json.dumps功能为将一个字典或可迭代对象转变为字符串
res = json.dumps(demo_dict)
print(f'demo_str转变为字符串的内容为: {res}')
# json.loads功能为将字符串转变为字典
res2 = json.loads(res)
print(f'将字符串转为json格式内容为: {res2}')



